package 周赛._277;

/**
 * @author 会玩的洋洋
 */
public class _5989_元素计数 {
    /**
     * 直接查询最大和最小值，通过计算是否存在有与最大值 最小值相同的数进行统计，
     * 最后将长度减去统计的最大值和最小值相同的数的数量即可
     * 即 n(数组长度、数量) - count(最大值和最小值的数量)
     * @param nums 目标数组
     * @return int
     */
    public int countElements(int[] nums) {
        int n = nums.length;
        if (n <= 2) {
            return 0;
        }
        int count = 0, max = nums[0], min = nums[0];
        // 将最大值和最小值 计算出来
        for (int i = 1; i < n; ++i) {
            if (nums[i] > max) {
                max = nums[i];
            } else if (nums[i] < min) {
                min = nums[i];
            }
        }
        // 遍历查询最大值和最小值的数量
        for (int num : nums) {
            if (num == max || num == min) {
                ++count;
            }
        }
        return n - count;
    }
}
